package org.ala.tiktools.rpc.netty.handler.ack;

import org.ala.tiktools.rpc.msg.RpcMsgHead;
import org.ala.tiktools.rpc.msg.ack.RpcAckMsg;
import org.ala.tiktools.rpc.netty.handler.IRpcMsgDecoderEncoder;

import io.netty.buffer.ByteBuf;

/**
 * @author ala
 * @date 2025-04-08 11:47
 */
public class RpcAckMsgDecoderEncoder implements IRpcMsgDecoderEncoder<RpcAckMsg> {
    /**
     *  默认实例
     */
    public static RpcAckMsgDecoderEncoder INSTANCE = new RpcAckMsgDecoderEncoder();


    @Override
    public RpcAckMsg decode(RpcMsgHead head, ByteBuf in) {
        byte[] bytes = new byte[head.getLen()];
        in.readBytes(bytes);
//        return RpcAckMsg.build().head(head).body(SerializerHolder.INSTANCE.deSerialize(bytes, RpcAckBody.class));
        return RpcAckMsg.build().head(head).bodyBytes(bytes);
    }

    @Override
    public void encoder(RpcAckMsg msg, ByteBuf out) {
//        byte[] bytes = SerializerHolder.INSTANCE.serialize(msg.getBody());
    	byte[] bytes = msg.getBodyBytes();
    	msg.getHead().len(bytes.length);

        out.writeLong(msg.getHead().getId());
        out.writeInt(msg.getHead().getType().getVal());
        out.writeInt(bytes.length);

        out.writeBytes(bytes);
    }
}
